package com.iapcursos.portal.procefet.controle;


import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.ejb.EJB;
import javax.faces.context.FacesContext;

import com.iapcursos.portal.procefet.modelo.beans.entitys.Aula;
import com.iapcursos.portal.procefet.modelo.beans.entitys.DiaSemana;
import com.iapcursos.portal.procefet.modelo.beans.entitys.Disciplina;
import com.iapcursos.portal.procefet.modelo.beans.entitys.Horario;
import com.iapcursos.portal.procefet.modelo.beans.entitys.Pessoa;
import com.iapcursos.portal.procefet.modelo.beans.entitys.Turma;
import com.iapcursos.portal.procefet.modelo.beans.sessions.interfaces.Sistema;

public class ControleAtualizarHorarios {

	private int iddisciplina;
	private int idhorario;
	private int idprofessor;

	private List<Horario> horarios;
	private Turma turma;
	private Horario horarioSelecionado;

	private List<Aula> aulas;

	private List<Disciplina> disciplinas;//osailton
	private List<Pessoa> professores;//osailton

	private int contadorAula = 0; //pogosailton

	private int idHorario;

	@EJB(mappedName="sistemaBean")
	private Sistema sistema;

	public ControleAtualizarHorarios() {

	}

	public int getContadorAula() {
		++ contadorAula;
		return contadorAula;
	}

	public List<Pessoa> getProfessores() {
		return professores;
	}

	public void setProfessores(List<Pessoa> professores) {
		this.professores = professores;
	}

	public int getIdHorario() {
		return idHorario;
	}

	public void setIdHorario(int idHorario) {
		this.idHorario = idHorario;
	}

	public Horario getHorarioSelecionado() {
		return horarioSelecionado;
	}

	public void setHorarioSelecionado(Horario horarioSelecionado) {
		this.horarioSelecionado = horarioSelecionado;
	}

	public String atualizarHorarios() {
		FacesContext context = FacesContext.getCurrentInstance();
        Map<String, String> map = context.getExternalContext().getRequestParameterMap();
        Disciplina disciplina = sistema.recuperarDisciplina(this.iddisciplina);
        Pessoa professor = sistema.recuperarProfessor(this.idprofessor);
        Aula aula = sistema.recuperarAula(this.idhorario);
        aula.setDisciplina(disciplina);
        aula.setProfessor(professor);
        sistema.atualizarAula(aula);

        return "horarios";
    }

	public List<Horario> getHorarios() {
		return horarios;
	}

	public void setHorarios(List<Horario> horarios) {
		this.horarios = horarios;
	}

	public Turma getTurma() {
		return turma;
	}

	public String editarHorario(){
		FacesContext context = FacesContext.getCurrentInstance();
		Map<String, String> map = context.getExternalContext().getRequestParameterMap();
		Integer id = Integer.parseInt(map.get("idTurma"));
		this.turma = sistema.recuperarTurma(id);

		ControleHorarios ch = (ControleHorarios)
			context.getExternalContext().getSessionMap().get("controleHorarios");
		ch.setTurmaSelecionada(this.turma);


		this.disciplinas = sistema.recuperarDisciplinas();
		this.professores = sistema.recuperarProfessores();

		return "editarhorario";
	}

	public List<Aula> getAulas() {
		List<Horario> horarios = turma.getHorarios();
		List<Aula> aulasDaSemana = new ArrayList<Aula>();
		aulas = new ArrayList<Aula>();

		for (Horario h : horarios ) {
			for (DiaSemana chave : h.getMapaAulas().keySet()) {
				aulas.add(h.getMapaAulas().get(chave));
			}
		}

		boolean teste = true;

		for (Aula aula : this.aulas) {

			if(aulasDaSemana.isEmpty()){
				aulasDaSemana.add(aula);
			}

			for (Aula jaTemEssaAula : aulasDaSemana) {
				if(aula.getDisciplina().getId() == jaTemEssaAula.getDisciplina().getId()){
				teste = false;
				}
			}

			if(teste){
				aulasDaSemana.add(aula);
			}

			teste = true;

		}

		return aulasDaSemana;
	}

	public List<Disciplina> getDisciplinas() {
		return disciplinas;
	}

	public void imprimir(){

	}

	public void setDisciplinas(List<Disciplina> disciplinas) {
		this.disciplinas = disciplinas;
	}

	public int getIddisciplina() {
		return iddisciplina;
	}

	public void setIddisciplina(int iddisciplina) {
		this.iddisciplina = iddisciplina;
	}

	public int getIdhorario() {
		return idhorario;
	}

	public void setIdhorario(int idhorario) {
		this.idhorario = idhorario;
	}

	public int getIdprofessor() {
		return idprofessor;
	}

	public void setIdprofessor(int idprofessor) {
		this.idprofessor = idprofessor;
	}



}
